package cn.kent.kuang;

/**
 * classLoader认知
 *  ClassLoader：
 *      Bootstrap classLoader:主要负责加载核心的类库(java.lang.*等)，构造ExtClassLoader和APPClassLoader。
 *      ExtClassLoader：主要负责加载jre/lib/ext目录下的一些扩展的jar。
 *      AppClassLoader：主要负责加载应用程序的主函数类
 *
 * 双亲委派机制：先找类加载器，然后往上找父 类加载器， 找不到将会抛出异常 --> 防止出现重写java核心类导致程序出错的情况
 */
public class ClassLoaderCognition {

    public static void main(String[] args) {
        ClassLoaderCognition classLoaderCognition = new ClassLoaderCognition();
        ClassLoader classLoader = classLoaderCognition.getClass().getClassLoader();
        System.out.println(classLoader); // AppClassLoader
        System.out.println(classLoader.getParent()); // ExtClassLoader
        System.out.println(classLoader.getParent().getParent()); // null
    }

    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

}
